Streaming of media over a network from a content server to a media or client device has become a widely adopted technique for media consumption. Two network protocols used for media streaming include the user datagram protocol Internet protocol (“UDP IP”) and the transfer control protocol (“TCP”) IP. UDP IP is often used for media streaming for relatively reliable networks, such as in-home streaming over wired connections. TCP IP is often used for streaming over less reliable networks.
A content server may implement the streaming of media by first dividing a media program into segments or chunks which may vary in duration but are often about one second in length. The content server publishes a playlist or manifest file that is accessible to the client device. The manifest file includes a list of URLs (“Universal Resource Locators”) to media segments that make up the program.
The hypertext transfer protocol (“HTTP”) based live streaming (“HLS”) protocol, used with TCP IP, allows a content server to publish variant manifest files to client devices. A variant manifest file identifies multiple sets of video streams for a media program, such as a movie, a television program, etc., where each set of video streams has unique encoding parameters (e.g., bit rates, resolutions, etc.) for the media program. The client devices may dynamically switch between the sets of video streams identified in the variant manifest file as the sets of video streams are transmitted from the content server to the client devices. The client devices may choose to receive an initial set of video streams identified in the variant manifest file based on initial network conditions, initial buffer conditions, etc. For example, the client devices may choose to receive a set of high definition (“HD”) video streams identified in the variant manifest file if the initial network conditions, the initial buffer conditions, etc., support the streaming of the HD set of video streams. If the initial network conditions degrade, or if the initial buffer conditions degrade, etc., then the client devices may choose to receive a set of low definition video streams identified in the variant manifest file. That is, the client device may dynamically choose different sets of video streams to receive from the content server where the different sets of video streams have different encoding parameters.
The variant manifest files are dynamically updated by the server and thus the client devices need to periodically retrieve the files. If the manifest files contain the URLs for all the media segments in a program, the size of the files may be excessively large, which can consume a substantial amount of bandwidth and place a burden on the resources of the content server and the media player as the manifest files are periodically communicated between them. One way to reduce the size of the manifest files is to only include a limited number of media segments URLs which define a window specifying a small portion of the program. The window is a moving or sliding window that includes a limited number of media segments URLs in which URLs for media segments occurring earlier in time are removed as URL for media segments occurring later in time are added.